package com.hsurosy.hsuchain.nft.api.user.service;

import com.hsurosy.hsuchain.nft.api.user.request.*;
import com.hsurosy.hsuchain.nft.api.user.response.UserOperatorResponse;
import com.hsurosy.hsuchain.nft.api.user.response.UserQueryResponse;
import com.hsurosy.hsuchain.nft.api.user.response.data.UserInfo;
import com.hsurosy.hsuchain.nft.base.response.PageResponse;

/**
 * 用户门面服务接口
 *
 * @Author Hsu琛君珩
 * @Date 2024-10-04 17:23
 * @Description
 * @Version: v1.0.0
 */
public interface UserFacadeService {

    /**
     * 用户信息查询
     *
     * @param userQueryRequest 用户查询请求
     * @return 用户查询响应，包含用户信息
     */
    UserQueryResponse<UserInfo> query(UserQueryRequest userQueryRequest);

    /**
     * 分页查询用户信息
     *
     * @param userPageQueryRequest 用户分页查询请求
     * @return 用户分页查询响应，包含用户信息列表
     */
    PageResponse<UserInfo> pageQuery(UserPageQueryRequest userPageQueryRequest);

    /**
     * 用户注册
     *
     * @param userRegisterRequest 用户注册请求
     * @return 用户操作响应
     */
    UserOperatorResponse register(UserRegisterRequest userRegisterRequest);

    /**
     * 用户信息修改
     *
     * @param userModifyRequest 用户信息修改请求
     * @return 用户操作响应
     */
    UserOperatorResponse modify(UserModifyRequest userModifyRequest);

    /**
     * 用户实名认证
     *
     * @param userAuthRequest 用户实名认证请求
     * @return 用户操作响应
     */
    UserOperatorResponse auth(UserAuthRequest userAuthRequest);

    /**
     * 用户激活
     *
     * @param userActiveRequest 用户激活请求
     * @return 用户操作响应
     */
    UserOperatorResponse active(UserActiveRequest userActiveRequest);
}
